/*
 * SpringCommandFactory.cpp
 *
 *  Created on: Nov 17, 2008
 *      Author: Ryan
 */

#include "SpringCommandFactory.h"

#include "../Commands/SpringAttackCommand.h"
#include "../Commands/SpringBuildCommand.h"
#include "../Commands/SpringBuildUnitCommand.h"
#include "../Commands/SpringCaptureCommand.h"
#include "../Commands/SpringGuardCommand.h"
#include "../Commands/SpringLoadCommand.h"
#include "../Commands/SpringReclaimCommand.h"
#include "../Commands/SpringRepairCommand.h"
#include "../Commands/SpringMoveCommand.h"
#include "../Commands/SpringPatrolCommand.h"
#include "../Commands/SpringQueuedCommand.h"

OOInterface::ConstCommandPtr SpringCommandFactory::createAttackCommand( OOInterface::ConstUnitPtr attackee )
{
	return OOInterface::CommandPtr( new SpringAttackCommand( attackee ) );
}

OOInterface::ConstCommandPtr SpringCommandFactory::createBuildCommand( OOInterface::ConstUnitPtr building, const OOInterface::Point3f& loc, const OOInterface::Direction& facing)
{
	return OOInterface::CommandPtr( new SpringBuildCommand( building, loc, facing ) );
}

OOInterface::ConstCommandPtr SpringCommandFactory::createBuildUnitCommand( OOInterface::ConstUnitPtr unit )
{
	return OOInterface::CommandPtr( new SpringBuildUnitCommand( unit ) );
}

OOInterface::ConstCommandPtr SpringCommandFactory::createCaptureCommand( OOInterface::ConstUnitPtr unit )
{
	return OOInterface::CommandPtr( new SpringCaptureCommand( unit ) );
}

OOInterface::ConstCommandPtr SpringCommandFactory::createGuardCommand( OOInterface::ConstUnitPtr unit )
{
	return OOInterface::CommandPtr( new SpringGuardCommand( unit ) );
}

OOInterface::ConstCommandPtr SpringCommandFactory::createLoadCommand( OOInterface::ConstUnitPtr unit )
{
	return OOInterface::CommandPtr( new SpringLoadCommand( unit ) );
}

OOInterface::ConstCommandPtr SpringCommandFactory::createReclaimCommand( OOInterface::ConstUnitPtr unit )
{
	return OOInterface::CommandPtr( new SpringReclaimCommand( unit ) );
}

OOInterface::ConstCommandPtr SpringCommandFactory::createRepairCommand( OOInterface::ConstUnitPtr unit )
{
	return OOInterface::CommandPtr( new SpringRepairCommand( unit ) );
}

OOInterface::ConstCommandPtr SpringCommandFactory::createMoveCommand( const OOInterface::Point3f& location )
{
	return OOInterface::CommandPtr( new SpringMoveCommand( location ) );
}

OOInterface::ConstCommandPtr SpringCommandFactory::createPatrolCommand( const OOInterface::Point3f& location )
{
	return OOInterface::CommandPtr( new SpringPatrolCommand( location ) );
}

OOInterface::ConstCommandPtr SpringCommandFactory::createQueuedCommand( OOInterface::ConstCommandPtr command )
{
	return OOInterface::CommandPtr( new SpringQueuedCommand( command ) );
}
